package com.zbkj.admin.service;

import com.zbkj.admin.model.req.AdminQuotaListReq;
import com.zbkj.admin.model.req.UserOperateQuotaReq;
import com.zbkj.admin.model.req.WithdrawConfirmReq;
import com.zbkj.admin.model.req.WithdrawListReq;
import com.zbkj.admin.model.vo.CalculateAfterBalanceVO;
import com.zbkj.service.model.vo.QuotaListVO;
import com.zbkj.admin.model.vo.WithdrawListVO;
import com.zbkj.dal.base.page.CommonPage;
import com.zbkj.dal.pojo.request.UserOperateBalanceRequest;
import com.zbkj.service.model.front.vo.user.FundFlowVO;

public interface AdminFundV2Service {

    /**
     * 提现确认
     *
     * @param req req
     */
    void withdrawConfirm(WithdrawConfirmReq req);

    /**
     * 提现列表
     *
     * @param req req
     * @return CommonPage<WithdrawListVO>
     */
    CommonPage<WithdrawListVO> withdrawList(WithdrawListReq req);

    /**
     * 提现导出
     *
     * @param req req
     */
    void withdrawExport(WithdrawListReq req);

    /**
     * 等级计算额度流水
     *
     * @param req req
     * @return {@link CommonPage}<{@link FundFlowVO}>
     */
    CommonPage<QuotaListVO> totalQuotaFundFlow(AdminQuotaListReq req);

    /**
     * 可用额度流水
     *
     * @param req req
     * @return {@link CommonPage}<{@link FundFlowVO}>
     */
    CommonPage<QuotaListVO> availableQuotaFundFlow(AdminQuotaListReq req);
    /**
     * 计算操作后余额
     *
     * @param request request
     * @return {@link CalculateAfterBalanceVO}
     */
    CalculateAfterBalanceVO calculateAfterBalance(UserOperateBalanceRequest request);

    /**
     * 操作用户额度
     *
     * @param request request
     * @return {@link Boolean}
     */
    boolean operateQuota(UserOperateQuotaReq request);

    /**
     * 计算操作后额度
     *
     * @param request request
     * @return {@link CalculateAfterBalanceVO}
     */
    CalculateAfterBalanceVO calculateAfterQuota(UserOperateQuotaReq request);
}
